جزوه جامع فصل دوم · نصب، کتابخانه‌ها، پردازش‌ها ← بازگشت به فهرست
📘 جزوه جامع فصل دوم نصب و مدیریت بسته‌ها، کتابخانه‌ها، پردازش‌ها
📅 تاریخ: ۱۴۰۵/۰۵/۲۲ 👤 مدرس: محمد عابدینی 🐚 Bash / Zsh · 🐧 Debian / Red Hat

▍ مفاهیم اولیه نصب برنامه

باینری (Binary): فایل اجرایی که مستقیماً توسط CPU اجرا می‌شود. در لینوکس، اکثر دستورات (مثل ls) فایل‌های باینری هستند که در /usr/bin یا /bin قرار دارند.

کد منبع (Source Code): کد نوشته‌شده توسط برنامه‌نویس که قبل از اجرا باید کامپایل شود. نصب از کد منبع نیاز به ابزارهای کامپایل (مانند gcc و make) دارد.

مخزن (Repository): مجموعه‌ای از بسته‌های آماده که توسط توزیع‌کننده تست و جمع‌آوری شده‌اند. با استفاده از مدیر بسته (Package Manager) می‌توان از مخازن نصب کرد.

🔑 دو خانواده اصلی در لینوکس:
  • دبیان (Debian): مدیر بسته apt، فرمت بسته .deb (مثال: Debian, Ubuntu, Kali, Mint)
  • رد هت (Red Hat): مدیر بسته dnf / yum، فرمت بسته .rpm (مثال: RHEL, Fedora, CentOS, AlmaLinux)

▍ نصب آنلاین (از مخزن)

دبیان:

┌──(ya3in㉿kali)-[~] └─$ sudo apt update Get:1 http://kali.download/kali kali-rolling InRelease [30.5 kB] ... └─$ sudo apt install htop Reading package lists... Done ... The following NEW packages will be installed: htop ...

توضیح: apt update لیست بسته‌های مخزن را به‌روز می‌کند. apt install بسته را از مخزن دانلود و نصب می‌کند (همراه با وابستگی‌ها).

رد هت:

┌──(user㉿redhat)-[~] └─$ sudo dnf install htop Last metadata expiration check: ... Dependencies resolved. ...

توضیح: dnf معادل apt در رد هت است و وابستگی‌ها را خودکار حل می‌کند.

▍ نصب آفلاین (با فایل بسته)

دبیان (با .deb):

┌──(ya3in㉿kali)-[~] └─$ sudo dpkg -i package.deb (Reading database ... 123456 files ...) Preparing to unpack ...

توضیح: dpkg -i فایل .deb را نصب می‌کند، اما وابستگی‌ها را خودکار حل نمی‌کند.

رد هت (با .rpm):

┌──(user㉿redhat)-[~] └─$ sudo rpm -ivh package.rpm Verifying... #################### ... Preparing... #################### ...

توضیح: rpm -ivh بسته .rpm را نصب می‌کند. -i نصب، -v جزئیات، -h نمایش هش (پیشرفت).

▍ نصب از کد منبع (مثال tmux)

مراحل کلی:

  1. دریافت کد (معمولاً با git clone)
  2. ./configure (بررسی وابستگی‌ها و آماده‌سازی)
  3. make (کامپایل)
  4. sudo make install (نصب در سیستم)
┌──(ya3in㉿kali)-[~] └─$ git clone https://github.com/tmux/tmux.git Cloning into 'tmux'... remote: Enumerating objects: ... └─$ cd tmux └─$ ./configure checking for a BSD-compatible install... yes ... └─$ make (CC) src/format.o ... (CC) src/utf8.o ... └─$ sudo make install /usr/bin/install -c -m 755 tmux /usr/local/bin/tmux ... └─$ tmux -V tmux 3.5 (آخرین نسخه)

توضیح: این مراحل نشان می‌دهد که چگونه tmux را از سورس نصب کنیم. ./configure سیستم را بررسی می‌کند، make کامپایل می‌کند و sudo make install نصب نهایی را انجام می‌دهد.

▍ کتابخانه‌ها (Libraries) و دستور ldd

کتابخانه (Library): مجموعه‌ای از توابع که برنامه‌ها از آنها استفاده می‌کنند.

دستور ldd: وابستگی‌های کتابخانه‌ای یک فایل باینری را نمایش می‌دهد.

┌──(ya3in㉿kali)-[~] └─$ which ls /usr/bin/ls └─$ ldd /usr/bin/ls linux-vdso.so.1 (0x00007ffd21d6a000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007fe2308a82000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe23085a000)
libpcre2-8.so.0 => /lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007fe2307c3000)
/lib64/ld-linux-x86-64.so.2 (0x00007fe230ae7000)

توضیح: خروجی نشان می‌دهد که ls به کتابخانه‌های libselinux، libc، libpcre2 و بارگذار پویا وابسته است. این کتابخانه‌ها باید در مسیرهای جستجو موجود باشند.

▍ chroot و کاربرد آن در محدود کردن کاربران

chroot (Change Root): دایرکتوری ریشه را برای یک فرآیند تغییر می‌دهد. کاربر در یک زندان (Jail) محصور می‌شود و فقط به فایل‌های داخل آن دسترسی دارد.

مراحل محدود کردن کاربر SSH با chroot:

  1. ایجاد دایرکتوری زندان: mkdir -p /home/test
  2. ایجاد دستگاه‌های /dev با mknod
  3. تنظیم مجوزها: chown root:root /home/test && chmod 0755 /home/test
  4. کپی کردن bash و کتابخانه‌های آن با ldd
  5. ایجاد کاربر و کپی /etc/passwd و /etc/group به زندان
  6. تنظیم /etc/ssh/sshd_config با Match User و ChrootDirectory
📌 نکات طلایی امتحانی – فصل دوم
  • دبیان: apt (آنلاین)، dpkg (آفلاین) – فرمت .deb
  • رد هت: dnf (آنلاین)، rpm (آفلاین) – فرمت .rpm
  • ldd وابستگی‌های کتابخانه‌ای را نشان می‌دهد.
  • chroot برای ایزوله‌سازی کاربران استفاده می‌شود.
  • نصب از سورس: ./configure → make → sudo make install
  • کتابخانه Static (.a): در کامپایل کپی می‌شود. Shared (.so): در اجرا بارگذاری می‌شود.
  • مخزن: مجموعه بسته‌های آماده در سرور.
  • مدیریت Jobs: & (پس‌زمینه)، jobs، fg، bg، Ctrl+Z
  • kill: ارسال سیگنال به پردازش. SIGTERM (15) پایان عادی، SIGKILL (9) کشتن اجباری.
  • Snap: نصب خودکار و ایزوله. AppImage: قابل حمل، بدون نصب.
✅ ادامهٔ مباحث (پردازش‌ها، jobs، kill، snap، appimage، zabbix) در بخش‌های بعدی ارائه خواهد شد.